package com.CampusLife.until;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.UUID;

/**
 * @author 赵海军
 * @Time
 */
public class ImagesUpload {
    public String Upload(MultipartFile file) throws Exception {
        String fileName = file.getOriginalFilename();
        System.out.println("原始文件名：" + fileName);

        String time = new Date().toString();
        //对当前时间进行加密，使之转化成相应的字符串，消除空格，避免出现路径报错
        String picname = Encrypt.MD5(time);

        String newfile = UUID.randomUUID().toString() + picname + ".jpg";
        //加入虚拟路径，存到数据库
        String imgUrl = "\\upload\\" + newfile;
        //获取项目路径

        //设置图片上传路径
        String savePath = "D:\\Life\\Campus-Life\\src\\main\\webapp\\WEB-INF\\upload\\";
        File files = new File(savePath);

        System.out.println(files);
        if (files.exists() && files.isDirectory()) {//若上传目录不存在，则创建目录
            files.mkdirs();
        }
        String message = "";
        InputStream is = null;
        FileOutputStream fos = null;
        byte[] buffer = new byte[100 * 1024];//根据上传文件大小设定
        try {
            is = file.getInputStream();// 获得上传文件流
            //创建文件输出流  使用FileOutputStream打开服务器端的上传文件
            fos = new FileOutputStream(savePath + newfile);
            int len = 0;
            //开始读取上传文件的字节，并将其输出到服务端的上传文件输出流中
            //循环将输入流读入到缓冲区当中，(len=in.read(buffer))>0就表示in里面还有数据
            while ((len = is.read(buffer)) > 0) {
                fos.write(buffer, 0, len);//写入到指定的目录当中
            }
            fos.flush();
            is.close();
            fos.close();
            message = "上传成功！" + "<br>";
            message += "上传内容：" + newfile + "<br>";

            System.out.println("上传内容：" + newfile + "");
            System.out.print("上传文件到:" + savePath + newfile);
            System.out.println("保存到数据库路径为"+imgUrl);
            return imgUrl;
        } catch (
                IOException e) {
            message = "文件上传失败！";
            throw new Exception(e);
        }

    }


}
